User database queries have become increasingly complex (e.g., involving larger numbers of joins between tables) as database technology enables the management of larger and more comprehensive databases in fields such as warehouses and/or life sciences, for example. Query optimizers in existing database management systems suffer from intolerably long optimization time and/or poor optimization results when optimizing large join queries. This is at least in part because processing and storage costs associated with planning join orders for joining tables to execute a database query grow exponentially with the number of tables that must be joined.